首页

欢迎

 

Welcome

欢迎来到这里, 这是一个学习数学、讨论数学的网站.

转到问题

请输入问题号, 例如: 2512

IMAGINE, THINK, and DO
How to be a scientist, mathematician and an engineer, all in one?
--- S. Muthu Muthukrishnan

Local Notes

Local Notes 是一款 Windows 下的笔记系统.

Local Notes 下载

Sowya

Sowya 是一款运行于 Windows 下的计算软件.

详情

下载 Sowya.7z (包含最新版的 Sowya.exe and SowyaApp.exe)


注: 自 v0.550 开始, Calculator 更名为 Sowya. [Sowya] 是吴语中数学的发音, 可在 cn.bing.com/translator 中输入 Sowya, 听其英语发音或法语发音.





注册

欢迎注册, 您的参与将会促进数学交流. 注册

在注册之前, 或许您想先试用一下. 测试帐号: usertest 密码: usertest. 请不要更改密码.


我制作的 slides

Problem

随机显示问题

Problèmes d'affichage aléatoires

软件 >> Magma
Questions in category: Magma (Magma).

[Magma]函数的定义

Posted by haifeng on 2011-08-13 14:50:55 last update 2021-03-14 18:49:59 | Answers (0)


Magma 中函数的定义有两种句法:

  • f := function(x1,...,xn: parameters)
        statements
    end function;
    
  • function f(x1,...,xn: parameters)
        statements
    end function;
    

函数体中至少有一句应是 return 语句, 可以返回多个值, 形如

return expression,...,expression;

当在 if ... then ... else 结构中, 如果要返回无定义的值, 则可使用下划线 _ , 这可以使得函数体的所有分支的返回值数目都是一样的.


参数的给定

参数的给定必须是逗号分隔的列表形式, 形如:

identifier1 := value, identifier2 := value, identifier3 := value

两者的区别

这两种定义方式的唯一区别在于递归调用时, 第一种形式的函数 f 不能在其定义体中调用 f 自己, 必须使用 $$ 来指代 f 自身. 而第二种形式的函数可以在定义体中调用函数自身.

例子: 生成 Fibonacci 数列


可变参数的函数定义方式

  • f := function(x1,...,xn,... : parameters)
        statements
    end function;
    
  • function f(x1,...,xn,... : parameters)
        statements
    end function;
    

这种函数在调用时可以传递多于 n 个参数. 形如: $f(y_1,...,y_m)$, $m\geqslant n$.

  • 对于 $i < n $, 实参 $y_i$ 被绑定到虚参 $x_i$ 上;
  • 对于 $i\geqslant n$, $y_i$ 被绑定到 $x_n$ 作为一个列表 $[*y_n,\ldots,y_m*]$.

 


简写方式

当函数体非常简单, 可以用一个表达式来定义时可以使用下面的简写方式来定义.

  • f := func < x1,...,xn : parameters | expression >;
    
  • f := func < x1,...,xn, ... : parameters | expression >;